Svelte kit의 API Route

Published at 2025-01-15

#svelte#sveltekit

https://velog.io/@kihyun/SvelteKit-에-대하여

개요

routes 폴더 아래에 +server.ts 파일을 만들면, 그 파일은 API Route Endpoint가 된다.

제품 내 코드에서 fetch(/api/posts) 를 호출했을 때, 그 요청은 routes/api/posts/+server.ts 으로 향하는 거다.

API Route Endpoint 파일 내부에선 각 메서드에 대응하는 함수를 export 할 수 있다.

method 별로 실행될 함수를 분리하여 유지 및 관리가 직관적이며 쉬워진다.

그리고 Endpoint 파일 내의 함수는 모두 Server-Side 에서 실행된다는 모양이다. 이 부분은 확인이 필요하다.

예시코드

import * as db from '$lib/database';

export async function get() {
	const items = await db.list();

	return {
		body: { items }
	};
}

export async function post({ request }) {
	const [errors, item] = await db.create(request);

	if (errors) {
		// return validation errors
		return {
			status: 400,
			body: { errors }
		};
	}

	// redirect to the newly created item
	return {
		status: 303,
		headers: {
			location: `/items/${item.id}`
		}
	};
}